home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / DSHJ2 / STUFFPTR.S < prev    next >
Encoding:
Text File  |  2001-02-10  |  2.2 KB  |  134 lines

  1. *    Assembly language module to handle low level screen operations
  2. *
  3. *
  4.     .globl    _stuffpt
  5.     .globl  _lineai
  6.     .globl  _lineav
  7.     .globl    _setvdi
  8.     .globl  _fixvdi
  9.     .globl  _f_move
  10.     .globl  _r_move
  11.     .globl    _Lf_move
  12. *
  13. _stuffpt:
  14.     move.l    4(sp),a0
  15.     move.l    8(sp),a1
  16.     move.l     (a0),(a1)
  17.     rts
  18.  
  19. *
  20. *    Line A init code 
  21. *
  22. *
  23. _lineai:
  24.     dc.w    $a000            * Init lineA
  25.     move.l    a0,_lineav
  26.     rts
  27. *
  28. *   Set up vdi variables for making image mask
  29. *
  30. *        4(sp)    - width of new screen
  31. *        6(sp)    - height of new screen
  32. *        8(sp)   - width of screen in bytes
  33. _setvdi:
  34.     move.l    _lineav,a0
  35.     lea    save_vars,a1
  36.     move.w    -780(a0),(a1)+
  37.     move.w    -774(a0),(a1)+
  38.     move.w    -772(a0),(a1)+
  39.     move.w    -692(a0),(a1)+
  40.     move.w    -690(a0),(a1)+
  41.     move.w    -666(a0),(a1)+
  42.     move.w    -622(a0),(a1)+
  43.     move.w    -614(a0),(a1)+
  44.     move.w     -12(a0),(a1)+
  45.     move.w      -4(a0),(a1)+
  46.     move.w      -2(a0),(a1)+
  47.     move.w        (a0),(a1)+
  48.     move.w       2(a0),(a1)
  49. *
  50.     move.w    #1,-780(a0)
  51.     move.w    #1,-774(a0)
  52.     move.w    #0,-772(a0)
  53.     move.w    4(sp),-692(a0)
  54.     sub.w    #1,-692(a0)
  55.     move.w    6(sp),-690(a0)
  56.     sub.w    #1,-690(a0)
  57.     move.w    #2,-666(a0)
  58.     move.w    #0,-622(a0)
  59.     move.w    #0,-614(a0)
  60.     move.w     4(sp),-12(a0)
  61.     move.w     6(sp),-4(a0)
  62.     move.w     8(sp),-2(a0)
  63.     move.w     #1,(a0)
  64.     move.w     8(sp),2(a0)
  65.         rts
  66. *
  67. _fixvdi:
  68.     move.l    _lineav,a0
  69.     lea    save_vars,a1
  70.     move.w    (a1)+,-780(a0)
  71.     move.w    (a1)+,-774(a0)
  72.     move.w    (a1)+,-772(a0)
  73.     move.w    (a1)+,-692(a0)
  74.     move.w    (a1)+,-690(a0)
  75.     move.w    (a1)+,-666(a0)
  76.     move.w    (a1)+,-622(a0)
  77.     move.w    (a1)+,-614(a0)
  78.     move.w    (a1)+,-12(a0)
  79.     move.w    (a1)+,-4(a0)
  80.     move.w    (a1)+,-2(a0)
  81.     move.w    (a1)+,(a0)
  82.     move.w    (a1)+,2(a0)
  83.     rts
  84. *
  85. *
  86. _f_move:
  87.     move.l    4(a7),a0
  88.     move.l    8(a7),a1
  89.     move.w    12(a7),d0
  90.     subq.w    #1,d0
  91.     bmi    f_mvexit
  92. f_mvlp:
  93.     move.b    (a0)+,(a1)+
  94.     dbra    d0,f_mvlp
  95. f_mvexit:
  96.     rts
  97. *
  98. *
  99. _r_move:
  100.     move.l    4(a7),a0
  101.     move.l    8(a7),a1
  102.     move.w    12(a7),d0
  103.     subq.w    #1,d0
  104.     bmi    r_mvexit
  105.     adda.l    #1,a0
  106.     adda.l    #1,a1
  107. r_mvlp:
  108.     move.b    -(a0),-(a1)
  109.     dbra    d0,r_mvlp
  110. r_mvexit:
  111.     rts
  112.  
  113.  
  114. *
  115. _Lf_move:
  116.     movea.l    $4(a7),a0    * Source
  117.     movea.l    $8(a7),a1    * Destination
  118.     move.l    $C(a7),d0    * count
  119.  
  120. lf_next:
  121.     tst.l    d0
  122.     beq.b    lf_exit
  123.     move.b    (a0)+,(a1)+
  124.     subq.l    #1,d0
  125.     bra.b    lf_next
  126. lf_exit:
  127.     rts
  128.  
  129.     
  130. *
  131. .bss
  132. save_vars:    .ds.w    14
  133. .end
  134.